perm filename DDEXT.SAI[VIS,HPM] blob sn#142198 filedate 1975-01-30 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 little extensions for the graphics routines
C00005 ENDMK
C⊗;
comment  little extensions for the graphics routines;

PROCEDURE BOX(REAL X1,Y1,X2,Y2);
   BEGIN
   LINE(X1,Y1,X2,Y1);
   LINE(X2,Y1,X2,Y2);
   LINE(X2,Y2,X1,Y2);
   LINE(X1,Y2,X1,Y1);
   END;

PROCEDURE CIRCLE(REAL X,Y,R);
   BEGIN
   DEFINE SE="0.382683432",CE="0.923879533"; comment sin and cos of 2π/16;
   REAL X0,Y0,X1,X2; INTEGER I;
   X0←R; Y0←0;
   FOR I←0 STEP 2 UNTIL 14 DO
      BEGIN
      X1←X0*CE+Y0*SE; Y1←Y0*CE-X0*SE; LINE(X0+X,Y0+Y,X1+X,Y1+Y);
      X0←X1*CE+Y1*SE; Y0←Y1*CE-X1*SE; LINE(X1+X,Y1+Y,X0+X,Y0+Y);
      END;
   END;

PROCEDURE ELLIPSE(REAL X,Y,RX,RY);
   BEGIN
   DEFINE SE="0.382683432",CE="0.923879533"; comment sin and cos of 2π/16;
   REAL X0,Y0,X1,X2,XYF; INTEGER I;
   X0←RX; Y0←0; XYF←RY/RX;
   FOR I←0 STEP 2 UNTIL 14 DO
      BEGIN
      X1←X0*CE+Y0*SE; Y1←Y0*CE-X0*SE; LINE(X0+X,Y0*XYF+Y,X1+X,Y1*XYF+Y);
      X0←X1*CE+Y1*SE; Y0←Y1*CE-X1*SE; LINE(X1+X,Y1*XYF+Y,X0+X,Y0*XYF+Y);
      END;
   END;

PROCEDURE SCIRCLE(REAL X,Y,R);
   BEGIN
   DEFINE SE="0.382683432",CE="0.923879533"; comment sin and cos of 2π/16;
   REAL X0,Y0,X1,X2; INTEGER I;
   REAL ARRAY XS[0:15],YS[0:15];
   X0←RX; Y0←0;
   FOR I←0 STEP 2 UNTIL 14 DO
      BEGIN
      XS[I]←X0+X; YS[I]←Y0+Y;
      X1←X0*CE+Y0*SE; Y1←Y0*CE-X0*SE;
      XS[I+1]←X1+X; YS[I+1]←Y1+Y;
      X0←X1*CE+Y1*SE; Y0←Y1*CE-X1*SE;
      END;
   POLYGO(16,XS[0],YS[0]);
   END;

PROCEDURE SELLIPSE(REAL X,Y,RX,RY);
   BEGIN
   DEFINE SE="0.382683432",CE="0.923879533"; comment sin and cos of 2π/16;
   REAL X0,Y0,X1,X2,XYF; INTEGER I;
   REAL ARRAY XS[0:15],YS[0:15];
   X0←RX; Y0←0; XYF←RY/RX;
   FOR I←0 STEP 2 UNTIL 14 DO
      BEGIN
      XS[I]←X0+X; YS[I]←Y0*XYF+Y;
      X1←X0*CE+Y0*SE; Y1←Y0*CE-X0*SE;
      XS[I+1]←X1+X; YS[I+1]←Y1*XYF+Y;
      X0←X1*CE+Y1*SE; Y0←Y1*CE-X1*SE;
      END;
   POLYGO(16,XS[0],YS[0]);
   END;